import { defineStore } from "pinia"

export const useUserInfoStore = defineStore("user", {
    state() {
        return {
            username: "",
            menus: [] as IMenu[]
        }
    },
    getters: {
        // getMenuRoutrs(state) {
        //     let menu = [...state.menus]
        //     menu.sort((a, b) => {
        //         return a.parentId - b.parentId
        //     })

        //     menu.forEach(item => {
        //         if (item.parentId === 0) {
        //             item.children = []
        //         }
        //         const idx = menu.findIndex(pitem => {
        //             return item.parentId == pitem.id
        //         })

        //         if (idx > -1) {
        //             menu[idx].children?.push(item)
        //         }
        //     })

        //     menu = menu.filter(item => item.parentId === 0)
        //     return menu
        // }
        getMenuRoutrs(state) {
            // const newMenu: IMenu[] = []
            const newMenu: { [k: number]: IMenu } = {}

            state.menus.forEach(item => {
                if (item.parentId === 0) {
                    newMenu[item.id] = {
                        ...item, children: newMenu[item.id]?.children
                    }
                } else {
                    newMenu[item.parentId] ??= {} as IMenu
                    newMenu[item.parentId].children ??= []
                    newMenu[item.parentId].children?.push(item)
                }
            })
            return newMenu
        },
        getPermission(state) {
            return state.menus.map(item => item.name)
        }
    },
    actions: {
        upDateMenus(menus: IMenu[]) {
            this.menus = menus
        }
    }
})